59
33
434956
44927
This Thursday 27 I'll be presenting our new project developing a bottom-up model to estimate public transport emissions based on #GTFS data. The method will soon be available as #rstats package & it's easily replicable to any city with GTFS + general info on fleet characteristics pic.twitter.com/wre40Lt10J
— Rafael H.M. Pereira 🚡 Urban Demographics (@UrbanDemog) May 26, 2021
Machine Learning 101. #BigData #Analytics #DataScience #AI #MachineLearning #IoT #IIoT #PyTorch #Python #RStats #TensorFlow #Java #JavaScript #ReactJS #GoLang #CloudComputing #Serverless #DataScientist #Linux #Programming #Coding #100DaysofCode https://t.co/U51Hvf1UKN pic.twitter.com/c4WA5C9Jdq
— Dr. Ganapathi Pulipaka 🇺🇸 (@gp_pulipaka) May 26, 2021
PornHub Creates 4K Remasters of Classic Adult Videos With AI. #BigData #Analytics #DataScience #AI #MachineLearning #IoT #IIoT #Python #RStats #TensorFlow #JavaScript #ReactJS #CloudComputing #Serverless #Linux #Programming #Coding #100DaysofCode https://t.co/Ku5uCDCIbz pic.twitter.com/mMscjawUD8
— Dr. Ganapathi Pulipaka 🇺🇸 (@gp_pulipaka) May 26, 2021
---
title: "#rstats Twitter Explorer"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
source_code: embed
theme:
version: 4
bootswatch: yeti
css: styles/main.css
---
```{r setup, include=FALSE}
library(flexdashboard)
library(rtweet)
library(dplyr)
library(httr)
library(lubridate)
library(echarts4r)
library(DT)
devtools::load_all()
rstats_tweets <- read_twitter_csv("data/rstats_tweets.csv")
count_timeseries <- rstats_tweets %>%
ts_data(by = "hours")
tweets_week <- rstats_tweets %>%
filter(as_datetime(created_at) %within% interval(floor_date(today(), "week"), today()))
tweets_today <- rstats_tweets %>%
filter(created_at == today())
by_hour <- rstats_tweets %>%
group_by(hour = hour(created_at)) %>%
summarise(count = n()) %>%
ungroup()
number_of_unique_tweets <- get_unique_value(rstats_tweets, text)
number_of_unique_tweets_today <-
get_unique_value(tweets_today, text)
number_of_tweeters_today <- get_unique_value(tweets_today, user_id)
number_of_likes <- rstats_tweets %>%
pull(favorite_count) %>%
sum()
```
Home
====
Row
-----------------------------------------------------------------------
### Tweets Today
```{r}
valueBox(number_of_unique_tweets_today, icon = "fa-comment-alt", color = "plum")
```
### Tweeters Today
```{r}
valueBox(number_of_tweeters_today, icon = "fa-user", color = "peachpuff")
```
### #rstats Likes
```{r}
valueBox(number_of_likes, icon = "fa-heart", color = "palevioletred")
```
### #rstats Tweets
```{r}
valueBox(number_of_unique_tweets, icon = "fa-comments", color = "mediumorchid")
```
Row {.tabset .tabset-fade}
-----------------------------------------------------------------------
### Tweet volume
```{r}
this_month <- floor_date(today(), "month")
count_timeseries %>%
e_charts(time) %>%
e_line(n, name = "# of tweets", smooth = TRUE, legend = FALSE) %>%
e_x_axis(
type = "time",
formatter = htmlwidgets::JS(
"function(value){
let date = new Date(value);
label = `${date.getDate()}-${(parseInt(date.getMonth()) + 1)}-${date.getFullYear()}`;
return label;
}"
)
) %>%
e_axis_labels(y = "Tweets") %>%
e_theme("westeros") %>%
e_tooltip(trigger = "axis", formatter = htmlwidgets::JS("
function(params) {
let date = new Date(params[0].value[0])
let options = { year: 'numeric', month: 'short', day: 'numeric', hour: 'numeric'}
let title = `${date.toLocaleDateString('en-US', options=options)}`
let num = `${params[0].value[1]} tweets`
return(`${title}${num}`);
}")) %>%
e_datazoom(type = "slider") %>%
e_zoom(
dataZoomIndex = 0,
start = 70,
end = 100
) %>%
e_zoom(
dataZoomIndex = 0,
startValue = today() - 7,
endValue = today(),
btn = "weekBtn"
) %>%
e_zoom(
dataZoomIndex = 0,
startValue = this_month,
endValue = today(),
btn = "monthBtn"
) %>%
e_button(
id = "weekBtn",
position = "top",
class = "btn btn-primary btn-sm",
"This Week"
) %>%
e_button(
id = "monthBtn",
position = "top",
class = "btn btn-primary btn-sm",
"This Month"
)
```
### Tweets by Hour of Day
```{r}
by_hour %>%
e_charts(hour) %>%
e_step(count, name = "Tweets", step = "middle", legend = FALSE) %>%
e_x_axis(
min = 0,
max = 23,
) %>%
e_axis_labels(x = "Time of Day (UTC)", y = "Tweets") %>%
e_theme("westeros") %>%
e_tooltip(trigger = "axis", formatter = htmlwidgets::JS("
function(params) {
let title = `${params[0].value[0]}h`
let num = `${params[0].value[1]} tweets`
return(`${title}${num}`);
}"))
```
Row
-----------------------------------------------------------------------
### 💗 Most Liked Tweet Today {.tweet-box}
```{r}
most_liked_url <- tweets_today %>%
slice_max(favorite_count)
get_tweet_embed(most_liked_url$screen_name, most_liked_url$status_id)
```
### ✨ Most Retweeted Tweet Today {.tweet-box}
```{r}
most_retweeted <- tweets_today %>%
slice_max(retweet_count)
get_tweet_embed(most_retweeted$screen_name, most_retweeted$status_id)
```
### 🎉 Most Recent {.tweet-box}
```{r}
most_recent <- tweets_today %>%
slice_max(created_at, with_ties=FALSE)
get_tweet_embed(most_recent$screen_name, most_recent$status_id)
```
Data
==============
### Tweets in the current week
```{r}
tweets_week %>%
select(
status_url,
created_at,
screen_name,
text,
retweet_count,
favourites_count,
mentions_screen_name
) %>%
mutate(
status_url = stringr::str_glue("On Twitter")
) %>%
datatable(
.,
extensions = "Buttons",
rownames = FALSE,
escape = FALSE,
colnames = c("Timestamp", "User", "Tweet", "RT", "Fav", "Mentioned"),
filter = 'top',
options = list(
columnDefs = list(list(
targets = 0, searchable = FALSE
)),
lengthMenu = c(5, 10, 25, 50, 100),
pageLength = 10,
scrollY = 600,
scroller = TRUE,
dom = '<"d-flex justify-content-between"lBf>rtip',
buttons = list('copy', list(
extend = 'collection',
buttons = c('csv', 'excel'),
text = 'Download'
))
)
)
```